package models

import (
	_ "github.com/go-sql-driver/mysql"
	"until/db"
	"tools/convert"
)

type CommonMap map[string]interface{}


type BaseModel struct {
	//PageIndex     int `json:"-" xorm:"-"`
	//PageSize int `json:"-" xorm:"-"`
}

//func (model *BaseModel) parsePageAndPageSize(params CommonMap) {
//	pageIndex, ok := params["PageIndex"]
//	if ok {
//		model.PageIndex = pageIndex.(int)
//	}
//	pageSize, ok := params["PageSize"]
//	if ok {
//		model.PageSize = pageSize.(int)
//	}
//	if model.PageIndex <= 0 {
//		model.PageIndex = db.Page
//	}
//	if model.PageSize <= 0||model.PageSize>db.MaxPageSize {
//		model.PageSize = db.MaxPageSize
//	}
//}

func (model *BaseModel) pageLimit(params CommonMap) (limit int, offset int) {

	pageIndex:=convert.MapGetInt(params,"PageIndex")
	pageSize:=convert.MapGetInt(params,"PageSize")
	if pageIndex <= 0 {
		pageIndex = db.Page
	}
	if pageSize <= 0||pageSize>db.MaxPageSize {
		pageSize = db.MaxPageSize
	}
	return pageSize,(pageIndex - 1) * pageSize
}
//
//// 创建Db
//func CreateDb() *xorm.Engine {
//	dsn := getDbEngineDSN(app.Setting)
//	engine, err := xorm.NewEngine(app.Setting.Db.Engine, dsn)
//	if err != nil {
//		logger.Fatal("创建xorm引擎失败", err)
//	}
//	engine.SetMaxIdleConns(app.Setting.Db.MaxIdleConns)
//	engine.SetMaxOpenConns(app.Setting.Db.MaxOpenConns)
//
//	if app.Setting.Db.Prefix != "" {
//		// 设置表前缀
//		TablePrefix = app.Setting.Db.Prefix
//		mapper := core.NewPrefixMapper(core.SnakeMapper{}, app.Setting.Db.Prefix)
//		engine.SetTableMapper(mapper)
//	}
//	// 本地环境开启日志
//	if iris.Env == macaron.DEV {
//		engine.ShowSQL(true)
//		engine.Logger().SetLevel(core.LOG_DEBUG)
//	}
//
//	go keepDbAlived(engine)
//
//	return engine
//}
//
//// 创建临时数据库连接
//func CreateTmpDb(setting *setting.Setting) (*xorm.Engine, error) {
//	dsn := getDbEngineDSN(setting)
//
//	return xorm.NewEngine(setting.Db.Engine, dsn)
//}
//
//// 获取数据库引擎DSN  mysql,sqlite
//func getDbEngineDSN(setting *setting.Setting) string {
//	engine := strings.ToLower(setting.Db.Engine)
//	var dsn string = ""
//	switch engine {
//	case "mysql":
//		dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s",
//			setting.Db.User,
//			setting.Db.Password,
//			setting.Db.Host,
//			setting.Db.Port,
//			setting.Db.Database,
//			setting.Db.Charset)
//	}
//
//	return dsn
//}

//func keepDbAlived(engine *xorm.Engine) {
//	t := time.Tick(180 * time.Second)
//	for {
//		<-t
//		engine.Ping()
//	}
//}
//func InitAll()  {
//
//}
